package com.siyu.basedata.pptnrlaste.mapper;

import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.siyu.basedata.pptnrlaste.domain.PptnRLaste;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 雨量历史数据Mapper接口
 *
 * @author hrhy
 * @date 2024-06-20
 */
@Mapper
public interface PptnRLasteMapper extends BaseMapper<PptnRLaste> {

    @Select("SELECT gs.ts AS tm, " +
            "COALESCE(SUM(drp), 0) AS drp " +
            "FROM generate_series('${startTime}'::timestamp, '${endTime}'::timestamp, '${step} hours') AS gs(ts) " +
            "LEFT JOIN st_pptn_r_laste " +
            "ON st_pptn_r_laste.tm >= gs.ts " +
            "AND st_pptn_r_laste.tm < gs.ts + interval '${step} hours' " +
            "AND st_pptn_r_laste.stcd = '${stcd}' " +
            "GROUP BY gs.ts " +
            "ORDER BY gs.ts")
    List<PptnRLaste> selectAreaRain(
            @Param("startTime") String startTime,
            @Param("endTime") String endTime,
            @Param("step") String step,
            @Param("stcd") String stcd);

    /**
     * 查询雨量历史数据
     *
     * @param stcd 雨量历史数据主键
     * @return 雨量历史数据
     */
    public PptnRLaste selectPptnRLasteByStcd(String stcd);

    /**
     * 查询雨量历史数据列表
     *
     * @param pptnRLaste 雨量历史数据
     * @return 雨量历史数据集合
     */
    public List<PptnRLaste> selectPptnRLasteList(PptnRLaste pptnRLaste);

    /**
     * 新增雨量历史数据
     *
     * @param pptnRLaste 雨量历史数据
     * @return 结果
     */
    public int insertPptnRLaste(PptnRLaste pptnRLaste);

    /**
     * 修改雨量历史数据
     *
     * @param pptnRLaste 雨量历史数据
     * @return 结果
     */
    public int updatePptnRLaste(PptnRLaste pptnRLaste);

    /**
     * 删除雨量历史数据
     *
     * @param stcd 雨量历史数据主键
     * @return 结果
     */
    public int deletePptnRLasteByStcd(String stcd);

    /**
     * 批量删除雨量历史数据
     *
     * @param stcds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePptnRLasteByStcds(String[] stcds);
}
